#include "Comm.hpp"
#include "Log.hpp"
using namespace std;

// 充当使用内存的角色
int main()
{

    //1.创建相同的key值
    key_t key = CreateKey();
    //cout << "key(hex): 0x" << hex << key << endl;
    Log() << "key(hex): 0x" << hex << key << endl;

    //2.获取共享内存
    int shmid = shmget(key,MEM_SIZE,IPC_CREAT);
    if(shmid < 0)
    {
        Log() << "shmget: " << strerror(errno) << "\n";
        return 2;
    }

    //3.挂接(关联)
    char *str = (char*)shmat(shmid,nullptr,0);
    
    //4.使用
    // sleep(6);  //仅用于观察
    
    //测试1
    int cnt = 0;      //未使用任何系统调用接口，这是因为共享内存实际上是映射到了进程地址空间的用户区(堆、栈之间)
    while(cnt <= 26)           
    {
        str[cnt] = 'A' +cnt;
        ++cnt;
        str[cnt] = '\0';
        sleep(1);
    }

    //5.去关联
    shmdt(str);
    return 0;
}